package formulacion;

import java.util.ArrayList;
import es.deusto.ingenieria.is.search.formulation.State;

public class EstadoHanoi extends State implements Cloneable
{
	private ArrayList<Soporte> soportes = new  ArrayList<Soporte>();
	
	public EstadoHanoi()
	{
	}
	
	public EstadoHanoi(ArrayList<Soporte> soportes)
	{
		this.soportes = soportes;
	}	
	
	@Override
	public boolean equals(Object state) 
	{	
		if(state != null && state instanceof EstadoHanoi)
		{
			EstadoHanoi estado = (EstadoHanoi)state;
			ArrayList<Soporte> soportesParam = estado.getSoportes();
			boolean iguales = true;
			if(this.soportes.size()== soportesParam.size())
			{
				for (int i = 0; i < soportes.size(); i++) 
				{
					if(!(soportes.get(i).equals(soportesParam.get(i))))
					{
						iguales = false;
					}	
				}
				
			}
			else
			{
				iguales = false;
			}
			
			return iguales;
		}
		else
		{
			return false;
		}
		
	}

	@Override
	public String toString() 
	{
		return soportes.toString();
	}
	
	@Override
	public Object clone()
	{
		EstadoHanoi estado = new EstadoHanoi();
		
		ArrayList<Soporte> newsoportes = new ArrayList<Soporte>();
		for (int i = 0; i < soportes.size(); i++) 
		{
			newsoportes.add(i, (Soporte)this.soportes.get(i).clone());
			
		}
		estado.setSoportes(newsoportes);
		return estado;
	}


	public Soporte getSoportes(int idSoporte) 
	{
		Soporte sop = new Soporte();
		sop = this.soportes.get(idSoporte);
		return sop;
	}

	public ArrayList<Soporte> getSoportes() {
		return soportes;
	}

	public void setSoportes(ArrayList<Soporte> soportes) {
		this.soportes = soportes;
	}
}